package com.h3bpm.web.utils;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * 基于 itext 的pdf 工具
 */
public class Img2Pdf {
    public static class Image2PDF {
        /*** @param picturePath 图片地址*/
        private static void createPic(Document document, String picturePath) {
            try {
                Image image = Image.getInstance(picturePath);
                float documentWidth = document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin();
                float documentHeight = document.getPageSize().getHeight() - document.topMargin() - document.bottomMargin() ;
                float height = image.getHeight();
                float width = image.getWidth();

                if (height < width) {
                    image.setRotationDegrees(90f);
                    image.scaleAbsolute( documentHeight,documentWidth );//重新设置宽高
                }else{
                    image.scaleAbsolute(documentWidth, documentWidth);//重新设置宽高
                }

                document.add(image);
            } catch (Exception ex) {
            }
        }
        public static void image2pdf(String text, String pdf) throws DocumentException, IOException {
            Document document = new Document();
            OutputStream os = new FileOutputStream(new File(pdf));
            PdfWriter.getInstance(document,os);
            document.open();
            createPic(document,text);
            document.close();
        }

    }




    /**
     *
     * 【功能描述：添加图片和文字水印】 【功能详细描述：功能详细描述】
     * @param srcFile 待加水印文件
     * @param destFile 加水印后存放地址
     * @param text 加水印的文本内容
     * @param textWidth 文字横坐标
     * @param textHeight 文字纵坐标
     * @throws Exception
     */
    public static void addWaterMark(String srcFile, String destFile, String text,
                             int textWidth, int textHeight) throws Exception
    {
        // 待加水印的文件
        PdfReader reader = new PdfReader(srcFile);
        // 加完水印的文件

        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(destFile));

        int total = reader.getNumberOfPages() + 1;
        PdfContentByte content;
        // 设置字体
        BaseFont font = BaseFont.createFont();
        // 循环对每页插入水印
        for (int i = 1; i < total; i++) {
            // 水印的起始
            content = stamper.getOverContent(i);

            // 开始
            content.beginText();
            // 设置颜色 默认为蓝色
            content.setColorFill(BaseColor.BLUE);
            // content.setColorFill(Color.GRAY);
            // 设置字体及字号
            content.setFontAndSize(font, 38);
            // 设置起始位置
            // content.setTextMatrix(400, 880);
            content.setTextMatrix(textWidth, textHeight);
            // 开始写入水印
            content.showTextAligned(Element.ALIGN_LEFT, text, textWidth, textHeight, 45);
            content.endText();
        }

        stamper.close();
    }


}
